package org.maylove.wuziqi.service;

import org.maylove.wuziqi.dao.DiscussBodyDao;
import org.maylove.wuziqi.dao.DiscussDao;
import org.maylove.wuziqi.pojo.discuss.discuss.Discuss;
import org.maylove.wuziqi.pojo.discuss.discussBody.DiscussBody;
import org.maylove.wuziqi.pojo.discuss.discussBody.dto.AddDiscussBodyDto;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.util.List;

@Service
public class DiscussServiceImpl implements DiscussService {

    @Autowired
    DiscussDao discussDao;

    @Autowired
    DiscussBodyDao discussBodyDao;

    @Override
    public void addDiscuss(Long userId, String discuss) {
        Discuss discuss1 = new Discuss();
        discuss1.setUserId(userId);
        discuss1.setContent(discuss);
        discuss1.setDiscussId(java.time.Instant.now().toEpochMilli());
        discuss1.setTime(LocalDateTime.now());
        discussDao.save(discuss1);
    }

    @Override
    public Long getDiscussUserId(Long discussId) {
        Discuss discuss = discussDao.findByDiscussId(discussId);
        if(discuss == null) {
            return 0L;
        }
        return discuss.getUserId();
    }

    @Override
    public void deleteDiscuss(Long discussId) {
        discussDao.deleteByDiscussId(discussId);
    }

    @Override
    public List<Discuss> getDiscuss(Integer pageNum, Integer pageSize) {
        return discussDao.getDiscuss((pageNum-1)*pageSize, pageSize);
    }

    @Override
    public void addDiscussBody(Long userId, AddDiscussBodyDto addDiscussBodyDto) {
        DiscussBody discussBody = new DiscussBody();
        discussBody.setContent(addDiscussBodyDto.getContent());
        discussBody.setDiscussId(addDiscussBodyDto.getDiscussId());
        discussBody.setTime(LocalDateTime.now());
        discussBody.setUserId(userId);
        discussBody.setDiscussBodyId(java.time.Instant.now().toEpochMilli());
        discussBodyDao.save(discussBody);
    }

    @Override
    public Long getDiscussBodyUserId(Long discussBodyId) {
        DiscussBody discussBody = discussBodyDao.findByDiscussBodyId(discussBodyId);
        if(discussBody == null) {
            return 0L;
        }
        return discussBody.getUserId();
    }

    @Override
    public void deleteDiscussBody(Long discussBodyId) {
        discussBodyDao.deleteByDiscussBodyId(discussBodyId);
    }

    @Override
    public List<DiscussBody> getDiscussBody(Long discussId) {
        return discussBodyDao.getDiscussBody(discussId);
    }


}
